package com.enjoyor.soa.traffic.api.ubms.service.dubbo;

import com.enjoyor.soa.traffic.api.ubms.dto.RegionInfoDto;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * 维护行政区信息的Dubbo服务
 * @author yuankun
 * @version V1.0
 */
@SuppressWarnings("rawtypes")
public interface DubboRegionInfoService {
	
	/**
	 * 返回所有行政区信息
	 * @return ResultPojo 所有行政区信息
	 */
	public ResultPojo getRegionInfo();
	
	/**
	 * 分页返回所有行政区信息
	 * @param page 分页对象
	 * @return ResultPojo 包含行政区信息的分页对象
	 */
	public ResultPojo getPageRegionInfo(Page page);
	

	/**
	 * 返回所有行政区信息
	 * @param orderSeq 
	 * @param regionName 
	 * @param parentId 
	 * @param regionId 
	 * @return ResultPojo 所有行政区信息
	 */
	public ResultPojo getRegionInfo(String regionId, String parentId, String regionName, String orderSeq);
	
	/**
	 * 分页返回所有行政区信息
	 * @param orderSeq 
	 * @param regionName 
	 * @param parentId 
	 * @param regionId 
	 * @param page 分页对象
	 * @return ResultPojo 包含行政区信息的分页对象
	 */
	public ResultPojo getPageRegionInfo(String regionId, String parentId, String regionName, String orderSeq, Page page);

	/**
	 * 返回指定编码的行政区信息
	 * @param regionId 行政区编码
	 * @return ResultPojo 行政区信息
	 */
	public ResultPojo getRegionInfoById(String regionId);
	
	/**
	 * 返回指定行政区的所有下级行政区信息
	 * @param parentId 行政区编码
	 * @return ResultPojo 所有下级行政区信息
	 */
	public ResultPojo getRegionInfoByParentId(String parentId);
	
	/**
	 * 分页返回指定行政区的所有下级行政区信息
	 * @param parentId 行政区编码
	 * @param page 分页对象
	 * @return ResultPojo 包含下级行政区信息的分页对象
	 */
	public ResultPojo getPageRegionInfoByParentId(String parentId, Page page);

	/**
	 * 添加一条行政区信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param regionInfoDto 行政区信息
	 * @return ResultPojo 添加结果
	 */
	public ResultPojo addRegionInfo(String token, RegionInfoDto regionInfoDto);

	/**
	 * 修改一条行政区信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param regionInfoDto 行政区信息
	 * @return ResultPojo 修改结果
	 */
	public ResultPojo editRegionInfo(String token, RegionInfoDto regionInfoDto);

	/**
	 * 删除指定编码的行政区信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param regionId 行政区编码
	 * @return ResultPojo 删除结果
	 */
	public ResultPojo removeRegionInfo(String token, String regionId);
	
	/**
	 * 获取部门树
	 * @param deptId 最顶级的区域编号
	 * @param extraParam 额外区域
	 * @return ResultPojo 区域树
	 */
	public ResultPojo getRegionGroupTree(String regionId, String extraParam);
}
